package cube.net.socket;

/**
 * Socket连接
 * 
 * @author abiao
 */
public interface SocketConnect {
	
    /**
     * 建立连接
     */
    void connect();

    /**
     * 关闭连接
     */
    void close();

    /**
     * 重连连接
     */
    void reconnect();

    /**
     * 发送数据
     */
    boolean send(byte[] data);
    
    /**
     * 发送字符串数据
     */
    boolean send(String s);

    /**
     * 查看连接IP
     */
    String getIP();

    /**
     * 查看连接端口
     */
    int getPort();

    /**
     * 查看连接收否建立
     */
    boolean isConnected();

    /**
     * 获取标识 ip:port
     */
    String identify();
    
    /**
     * 设置是否启用自动重连，默认启动
     */
    void setAutoReconnect(boolean auto);
    
    /**
     * 设置自动重连时间，默认3秒
     */
    void setAutoReconnectTime(int time);
    
    /**
	 * 空连接
	 */
	public static final SocketConnect NULL = new SocketConnect() {
		public boolean send(byte[] data){return false;} public void close() {}
		public boolean isConnected(){return false;} public void connect() {}
		public int getPort(){return 0;} public String identify(){return null;}
		public void setAutoReconnect(boolean auto){} public void reconnect() {}
		public void setAutoReconnectTime(int time){} public String getIP(){return null;}
		public boolean send(String s){return false;}
	};
}
